This invention relates to volume rendering, in particular to rendering a two dimensional polygon image from volume data defining a volume and plane data defining a two dimensional plane which intersects the volume. More particularly the invention relates to volume rendering using a computer system that includes a graphics processing unit (GPU).
Volume rendering is a method of displaying two dimensional (2D) representations of three-dimensional (3D) data sets. An introduction to volume rendering is given in Lichtenbelt et al. “Introduction to Volume Rendering”, Hewlett-Packard Company, Prentice-Hall PTR, New Jersey, 1998 [1] which is incorporated herein in its entirety by reference.
Volume rendering is used in the field of medical imaging where the 3D data sets of voxels can be collected by medical imaging equipment, such as computer-assisted tomography (CT) scanners, magnetic resonance scanners and positron-emission-tomography (PET) systems. These 3D data sets are sometimes referred to as volume data. In the early days of medical imaging, rendering of volume data was performed on vendor-specific software and hardware associated with the scanner. However, for a number of years, application software to implement volume rendering on general purpose computers, for example standard personal computers and workstations, which does not utilize any bespoke hardware has been well known.
Medical volume rendering is highly computationally intensive and the processing power of a modern general purpose computer's central processing unit (CPU) is often inadequate for performing the task at an acceptable speed.
Modern personal computers and workstations generally include a graphics card, and in most cases the graphics card includes a Graphics Processing Unit (GPU). In terms of aggregate processing power, modern GPUs typically outperform a computer's CPU by roughly an order of magnitude.
Although not originally designed with this use in mind, GPUs do have sufficient general programmability that they can be applied to the task of volume rendering, in particular, to volume rendering in medicine where the task is usually to render images of the internal organs of human patients. However, while the GPU might have sufficient raw computing power to perform medical image rendering, it is nonetheless a difficult task to implement a practical GPU-based medical image renderer.
A common technique in volume rendering is to define one or more 2D planes, sometimes called imaging planes, which are parallel to a projection plane and to render the intersection of the imaging plane or planes with the volume of the volume data. This volume is sometimes referred to as the volume of interest. In general, an imaging plane will be oblique to the axes of the volume, which typically, but not necessarily, is a right parallelepiped (e.g. a cube). The intersection of an imaging plane with a right parallelepiped volume will be an irregular polygon of three to six sides. The geometry of this polygon varies as the location and the orientation of the plane relative to the volume of interest changes, and thus generally needs to be re-computed for every frame being rendered. The process of determining the geometry of this polygon is sometimes referred to as clipping.
It should be noted that clipping a polygon is not strictly needed to generate a correct volume rendering, but is useful for efficiency reasons. A correct rendering could be generated by providing a polygon that extends beyond the volume and checking in a later stage of the GPU (typically the pixel shader stage) that each interior point of the polygon is within the volume. However, this would be inefficient because it would involve processing redundant points which can be avoided by clipping the polygon.
A typical GPU offers six clipping planes as a hardware capability and the GPU can clip the geometry to be rendered efficiently using these planes. One way of determining the intersection of a plane with a volume of interest is to set the GPU clipping planes to match the faces of the volume, defining each imaging plane to extend beyond the volume, and to allow the GPU to clip the imaging planes. The main shortcoming of this simple technique is that it has been observed that changing the GPU clipping planes stalls the operation of the GPU and it is therefore an inefficient operation to do frequently. It is a common requirement of volume rendering to render a volume of interest not as a single volume but as a plurality of sub-volumes or blocks. This requirement may arise for storage optimization reasons or to avoid processing empty (transparent) regions of the volume. Processing these blocks would require switching the GPU clipping frames to render each block and this would be inefficient.
There are other reasons not to use the GPU clipping planes to render the two dimensional polygon image and these include that a typical GPU only supplies six clipping planes and that the GPU clipping planes may be committed to other uses, for example some GPU clipping planes may be used to implement additional clipping primitives controlled by the user (so the volume of interest is no longer a parallelepiped but an irregular solid).
The present invention is concerned with rendering a two dimensional polygon image from volume data defining a volume and plane data defining a two dimensional plane which intersects the volume. The invention seeks to provide an apparatus and method to render the two dimensional polygon image using the processing abilities of a GPU, but without requiring the use of the GPU clipping planes.